package algorithm_primary.studyClass.新手课程;

/**
 * @author 衡孟浩
 * @date 2023/5/27 14:12
 * 给一个有序数组和一个目标数值找到 >=的位置下标
 * <p>
 * 比如   [1,2,2,3,4,4,5,6,8,8]      和  一个  2
 * 那么  返回   1   因为大于等于的最左位置是   下标为1的
 * 如果输入一个7    那么返回  7   因为只有这个地方是小于7的
 */
public class 最左位置 {

    public static void main(String[] args) {
        int[] nums = {1, 2, 2, 3, 4, 4, 5, 6, 8, 8};
        System.out.println(moreLeft(nums, 1));
    }

    public static int moreLeft(int[] nums, int target) {

        if (nums == null || nums.length == 0){
            return -1;
        }



        int l = 0, r = nums.length - 1, mid = 0, result = 0;
        while (l <= r) {
            mid = (l + r) / 2;
            if (nums[mid] >= target) {
                result = mid;
                r = mid - 1;
            } else {
                l = mid + 1;
            }

        }
        return result;
    }
}
